﻿//using iTextSharp.text;
//using iTextSharp.text.pdf;
//using Kingdee.BOS;
//using Kingdee.BOS.Contracts;
//using Kingdee.BOS.Core;
//using OpenQA.Selenium;
//using OpenQA.Selenium.Chrome;
//using System;
//using System.IO;
//using System.Net;
//using System.Net.Mail;
//using System.Threading;

//namespace DzInfo.DzSchedule.LianKe
//{
//    /// <summary>
//    /// 联科自动把大屏网页转换成图片并发送邮件
//    /// </summary>
//    public class LianKeDP : IScheduleService
//    {
//        public void Run(Context ctx, Schedule schedule)
//        {
//            const string ip = "https://www.baidu.com/"; // 替换为实际IP
//            const string emailTo = "49872850@qq.com";
//            const string emailFrom = "it@dna-group.com";
//            const string emailPassword = "Dna111222";
//            const string smtpHost = "smtp.qiye.aliyun.com";
//            const int smtpPort = 25;
//            try
//            {
//                // 1. 截图保存
//                string imagePath = CaptureScreenshot(ip);

//                // 2. (可选)生成PDF
//                string pdfPath = Path.ChangeExtension(imagePath, ".pdf");
//                ConvertImageToPdf(imagePath, pdfPath);

//                // 3. 发送邮件
//                SendEmail(emailFrom, emailPassword, emailTo, smtpHost, smtpPort,
//                          "每日数据大屏快照",
//                          "附件为自动抓取的数据大屏内容",
//                          new[] { imagePath, pdfPath });

//                Console.WriteLine($"任务完成于 {DateTime.Now}");
//            }
//            catch (Exception ex)
//            {
//                Console.WriteLine($"错误: {ex.Message}");
//            }
//        }

//        private void ConvertImageToPdf(string imagePath, string pdfPath)
//        {
//            var fs = new FileStream(pdfPath, FileMode.Create);
//            var document = new Document(PageSize.A4.Rotate());
//            var writer = PdfWriter.GetInstance(document, fs);

//            document.Open();
//            var image = Image.GetInstance(imagePath);
//            image.ScaleToFit(document.PageSize.Width, document.PageSize.Height);
//            image.Alignment = Element.ALIGN_CENTER;

//            document.Add(image);
//            document.Close();
//        }

//        private void SendEmail(string from, string password, string to, string smtpHost, int port, string subject, string body, string[] attachments)
//        {
//            var client = new SmtpClient(smtpHost, port)
//            {
//                Credentials = new NetworkCredential(from, password),
//                EnableSsl = true
//            };

//            var message = new MailMessage(from, to)
//            {
//                Subject = subject,
//                Body = body,
//                IsBodyHtml = false
//            };

//            foreach (var file in attachments)
//            {
//                if (File.Exists(file))
//                    message.Attachments.Add(new Attachment(file));
//            }

//            client.Send(message);

//            // 清理附件
//            foreach (var file in attachments)
//            {
//                File.Delete(file);
//            }
//        }

//        private string CaptureScreenshot(string url)
//        {
//            var options = new ChromeOptions();
//            //options.AddArguments("headless", "disable-gpu", "window-size=1920,1080");
//            options.AddArgument("--disable-build-check"); // 禁用驱动版本检查
//            options.AddAdditionalOption("useAutomationExtension", false);

//            // 通过环境变量关闭 Selenium Manager
//            Environment.SetEnvironmentVariable("SE_MANAGER", "0");

//            //using 
//            var driver = new ChromeDriver(options);
//            driver.Navigate().GoToUrl(url);
//            Thread.Sleep(5000); // 等待页面加载（根据实际调整）

//            var screenshot = (driver as ITakesScreenshot).GetScreenshot();
//            string path = $"./ScreenShot_{DateTime.Now:yyyyMMddHHmmss}.png";
//            //screenshot.SaveAsFile(path, ScreenshotImageFormat.Png);
//            // 替代方案：直接保存为字节流
//            byte[] screenshotBytes = screenshot.AsByteArray;
//            File.WriteAllBytes(path, screenshotBytes);

//            return path;
//        }
//    }
//}
